package cn.zld.sh.sh.base;

import android.app.Activity;
import android.app.Application;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;


import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * Created by xing on 2018/8/17.
 * 定义全局的application
 */

public class BaseApplication extends Application{
    /**
     * 因为Application类全局只有一个，它本身就是一个单例，所以不需要再给它加上单例的外衣去保护它。
     * 为以后添加第三方准备
     */
    public static BaseApplication context;
    // 存放系统配置信息的sharedPreferences文件实例
    private static SharedPreferences mSharedPreferences;
    // 所有系统配置有关的信息 都存放在这个xml文件里面（sharedPreferencesFile）
    private static final String SystemConfigFile = "systemConfig.xml";

    private List<Activity> activityList = new LinkedList();

    @Override
    public void onCreate() {
        super.onCreate();
        context = this;
        initActivity();
        //创建存储sp的工具  存放在本地存储
        createSharedPreferencesFile();
    }
    //将所有activity放在集合里面统一管理
    private void initActivity() {
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                activityList.add(activity);
            }

            @Override
            public void onActivityStarted(Activity activity) {

            }

            @Override
            public void onActivityResumed(Activity activity) {

            }

            @Override
            public void onActivityPaused(Activity activity) {

            }

            @Override
            public void onActivityStopped(Activity activity) {

            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

            }

            @Override
            public void onActivityDestroyed(Activity activity) {
                activityList.remove(activity);
            }
        });
    }


    /**
     * @author xing
     * @time 2018年8月21日10:27:10
     * @描述: 返回系统配置信息的sharedPreferences文件实例
     * @return sharedPreferences文件实例
     */
    public static SharedPreferences getSystemConfigSharedFile() {
        Log.i("shared_debug", "shared_debug");
        Log.i("shared_debug", mSharedPreferences.toString());
        return mSharedPreferences;
    }

    /**
     * @author xing
     * @time 2018年8月21日10:27:14
     * @描述: 创建存放系统所有配置文件的 sharedpreferences文件
     */
    public void createSharedPreferencesFile() {
        mSharedPreferences = getSharedPreferences(SystemConfigFile, MODE_PRIVATE);
    }

    /**
     * 暴露上下文
     * @return application 实例
     */
    public static BaseApplication getApplication() {
        return context;
    }

    // 遍历所有Activity并finish
    public void exit(){
        Iterator<Activity> iterator = activityList.iterator();
        while (iterator.hasNext()){
            Activity activity = iterator.next();
            activity.finish();
            iterator.remove();
        }
        activityList.clear();
        System.exit(0);
    }


}
